import axios from 'axios';
import { ElMessage, ElLoading } from 'element-plus';
 
let loadingInstance: any;
// axios.defaults.baseURL = 'http://10.2.3.135:8060'// 请求拦截器 刘
axios.defaults.baseURL = 'http://10.2.3.133:8060/'
// axios.defaults.baseURL = 'https://motionlab.hynamic.cn/prod-api' //正式
// axios.defaults.baseURL = 'https://videostoretest.hynamic.cn/prod-api'//测试环境

axios.interceptors.request.use(config => {
  // 显示加载动画
  // loadingInstance = ElLoading.service({
  //   lock: true,
  //   text: '加载中...',
  //   background: 'rgba(0, 0, 0, 0.7)'
  // });
 
  // 从本地存储获取token，并添加到请求头
  const token = localStorage.getItem('token');
  if (token) {
    config.headers['Authorization'] = 'Bearer ' + token;
  }
 
  return config;
}, error => {
  return Promise.reject(error);
});
 
// 响应拦截器
axios.interceptors.response.use(response => {
  // 关闭加载动画
  if (loadingInstance) {
    loadingInstance.close();
  }
  if (response.data.code == 401) {
    localStorage.removeItem('token')
    localStorage.removeItem('userInfo')
  }
  return response;
}, error => {
  // 关闭加载动画
  if (loadingInstance) {
    loadingInstance.close();
  }
 
  // 如果是401错误，说明token过期，可以引导用户到登录页面
  if (error.response && error.response.status === 401) {
    ElMessage.error('Token过期，请重新登录');
    // 清除token信息并跳转到登录页面
    localStorage.removeItem('token');
    // 这里以跳转到登录页面为例
    // location.href = '/login';
  }
 
  return Promise.reject(error);
});
 
// 封装get和post方法
// 封装get方法
export const get = <T>(url: string, params?: any): Promise<T> => {
  return new Promise((resolve, reject) => {
    axios.get<T>(url, {
      params: params
    })
    .then(response => {
      resolve(response.data);
    })
    .catch(error => {
      reject(error);
    });
  });
};
 
// 封装post方法
export const post = <T>(url: string, data?: any): Promise<T> => {
  return new Promise((resolve, reject) => {
    axios.post<T>(url, data)
    .then(response => {
      resolve(response.data);
    })
    .catch(error => {
      reject(error);
    });
  });
};